﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>SetDirectoryW</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../styles/styles.css">
<script language="javascript" src='../links.js' type="text/javascript"></script>
</head>
<body>

<h1>SetDirectoryW</h1>
<div class=navbar>
<a href="../index.html">главная</a> |
<a href="index.html">экспортируемые функции</a> |
<a href="../panelapi/index.html">Panel API</a>
</div>

<div class=shortdescr>
Функция <code>SetDirectoryW</code> вызывается Far Manager'ом для смены каталога в эмулируемой файловой системе.
</div>

<pre class=syntax>
intptr_t WINAPI SetDirectoryW(
  const struct SetDirectoryInfo *Info
);
</pre>

<h3>Параметры</h3>
<div class=descr>
  <div class=dfn>Info</div>
    <div class=dfndescr>Указатель на структуру <a href="../structures/setdirectoryinfo.html">SetDirectoryInfo</a>, Far Manager передает плагину информацию о новом каталоге.<br>
    В начале функции проверьте, что поле <code>SetDirectoryInfo.StructSize >= sizeof(SetDirectoryInfo)</code>.</div>
</div>

<h3>Возвращаемое значение</h3>
<div class=descr>
Если функция выполнила свои действия успешно, то верните <code>1</code>. В противном случае <code>0</code>.
</div>

<h3>Замечания</h3>
<div class=descr>
Если в <code>SetDirectoryInfo.OpMode</code> выставлен флаг <a href="../defs/operation_mode.html#OPM_FIND">OPM_FIND</a>, то:
<ol>
<li>это значит, что функция <code>SetDirectoryW</code> вызывается из диалога поиска файлов (<kbd>Alt</kbd>+<kbd>F7</kbd>) или другой команды, сканирующей каталоги.
Поэтому плагин не должен производить никаких действий кроме смены каталога и возвращения <code>1</code> в случае удачи или <code>0</code> в случае невозможности сменить каталог.
<li>плагин должен аккуратно обрабатывать каталог ".." и при невозможности сменить его - возвращать <code>0</code>. Иначе поиск может зациклиться на панели этого плагина.
</ol>
</div>

<h3>Пример</h3>
<div class=descr>
Пример из плагина "TmpPanel".
<pre class=code>
intptr_t WINAPI SetDirectoryW(const struct SetDirectoryInfo *Info)
{
  TmpPanel *Panel=(TmpPanel *)Info->hPanel;
  return Panel->SetDirectory(Info->Dir,Info->OpMode);
}
</pre>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
</div>

</body>
</html>
